#pragma once

/**
 * 定义各种类型，在不同平台类型的长度不同，
 * 需要手动定义。
 */
typedef char           int8;
typedef short          int16;
typedef int            int32;
typedef long           int64;
typedef unsigned char  uint8;
typedef unsigned short uint16;
typedef unsigned int   uint32;
typedef unsigned long  uint64;

/**
 * 表示最大的整数和浮点数结构
 */
typedef unsigned long uint_max;
typedef long          int_max;
typedef double        decimal_t;

/**
 * 数字类型 NumberType
 */
typedef enum _NType NType;
enum _NType
{
        N_TYPE_DECIMAL = 1, // 浮点类型
        N_TYPE_INTEGER = 0, // 整数类型
};

/**
 * 按钮类型 ButtonType
 * 表示单片机按钮的作用，其中：
 * 0 - 9 表示数字按钮零至九，
 * 其余则代表功能按钮枚举
 */
typedef enum _ButtonType ButtonType;
enum _ButtonType
{
        BUTTON_TYPE_DOT   = 10, // 小数点
        BUTTON_TYPE_EQU   = 11, // 等于号
        BUTTON_TYPE_DIV   = 12, // 除号
        BUTTON_TYPE_MUL   = 13, // 乘号
        BUTTON_TYPE_SUB   = 14, // 减号
        BUTTON_TYPE_ADD   = 15, // 加号

        BUTTON_TYPE_CLS   = 16, // 清空所有内容
        BUTTON_TYPE_LEFT  = 17, // 左移数字
        BUTTON_TYPE_RIGHT = 18, // 右移数字

        BUTTON_TYPE_QUIT  = 21, // 测试：退出按钮

        BUTTON_TYPE_NONE  = 22, // 无按钮信号
};
